package com.nuoniu.sibanyun.service.production;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.bo.VProductionWorkDetailBo;
import com.nuoniu.sibanyun.entity.production.VProductionWorkDetail;
import com.nuoniu.sibanyun.entity.production.VProductionWorkMain;
import com.nuoniu.sibanyun.entity.vo.VProductionWorkDetailSimpleVo;


import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 生产加工单明细 服务类
 * </p>
 *
 * @author 小啊刚
 * @since 2021-03-13
 */
public interface IVProductionWorkDetailService extends IService<VProductionWorkDetail> {

    /**
     * 批量保存 生产加工明细
     * @param productionWorkMain
     */
    void batchSave(VProductionWorkMain productionWorkMain);

    /**
     * 通过加工单ID  查询 物料明细 和 工序明细
     * @param productionWorkId
     * @return
     */
    VProductionWorkDetailSimpleVo getVProductionWorkDetailSimpleVo(Long productionWorkId);

    /**
     * 根据主表ID 查询明细ID集合
     * @param mainId
     * @return
     */
    List<Integer> getDetailByMainId(Integer mainId);


    /**
     * 获取 明细
     * @param orderId
     * @return
     */
    List<VProductionWorkDetail> getDetailsByOrderId(Long orderId);

    void removeByOrderId(Long orderId);

    /**
     * 获取加工单产品明细详情（带主表信息）
     * @param id
     * @return
     */
    VProductionWorkDetailBo getVProductionWorkDetailBo(Integer id);

    /**
     * 根据 加工单ID 查询未派遣 完成的 产品明细
     * @param mainId
     * @return
     */
    List<VProductionWorkDetail> listNotDispatchedDetail(Integer mainId);

    /**
     * 根据 加工单ID 查询未派遣 完成的 产品明细_2
     * @param mainId
     * @return
     */
    List<VProductionWorkDetail> listNotDispatchedDetail2(Integer mainId);

    /**
     *  更新产品累计派遣数量
     * @param id     加工单产品明细ID
     * @param offset 偏移量
     * @return
     */
    void updateCumDispatchQuantity(Integer id,BigDecimal offset);

    /**
     *  删除主表下的明细但不包括 制定明细
     * @param mainId
     * @param detailIds
     */
    void deleteBatchFromMainIdAndNotInDetailIds(Long mainId,List<Long> detailIds);

}
